package slidingwindow;
//最小操作数
public class MinOperations {
    public static void main(String[] args) {
        int[] nums= {1,1,4};
        System.out.println(minOperations(nums, 6));
    }
    public static int minOperations(int[] nums, int x) {
        int n = nums.length;
        int sum = 0,ret = -1;
        for (int a : nums) sum += a;
        int target = sum - x;
        if(target < 0) return -1;
        for (int right = 0,left = 0,tmp = 0; right < n; right++) {
            tmp += nums[right];
            while(tmp > target) {
                tmp -= nums[left++];
            }
            if(tmp == target) {
                ret = Math.max(ret,right-left+1);
            }
        }
       if(ret == -1) return ret;
       else return  n-ret;
    }







    //将 x 减到 0 的最⼩操作数
//    public static int minOperations(int[] nums, int x) {
//       int n = nums.length;
//       int sum  = 0;
//       for(int a : nums) sum += a;
//        System.out.println(sum);
//        int targe = sum - x;
//        if(targe < 0) return -1;
//        int ret = -1;
//        for (int right = 0, left = 0,tmp = 0; right < n; right++) {
//            tmp += nums[right];
//            while (tmp > targe) {
//                tmp -= nums[left++];
//
//            }
//            if (tmp == targe) {
//                ret = Math.max(right - left + 1, ret);
//            }
//        }
//        if(ret == -1) {
//            return ret;
//        }else {
//            return n-ret;
//        }
//
//    }

}
